システムの脆弱性 2018 2 3

 どのようなプログラミング言語にも脆弱性はあると思います。
たとえば、C言語は、「scanf()」という関数が弱いでしょう。
 この関数は、キーボードから入力されたデータを受け取る関数ですが、
「脆弱性がある」と言えるでしょう。
 にもかかわらず、多くの入門書には、
「scanf()」という関数が紹介されています。
 森口将憲氏の著書には、
「恐怖の入力ミス」というページで、
「scanf関数」は、いろいろな問題を抱えている関数です。
入門書では、比較的よく使われるにもかかわらず、
本格的なシステム開発では使われません。
 会社(学校)によっては、
scanf関数の禁止令を出していることがあります。
(引用、以上)
 たとえば、任意の数字から任意の数字までを
合計するプログラムを作った時、
任意の数字をキーボードから受け取る時に、
scanf関数を使います。
 具体的には、1から100までを合計するプログラムで、
「1」と「100」をキーボード入力する時に、
scanf関数を使います。
 森口将憲氏の著書では、
以下のような実験があります。
 ここで問題なのは、キーボードに大きな数字を入れてしまった場合です。
16ビットコンパイラ(LSI C-86)では、
キーボードから「1」と「70000」を入力して、
1から70000までの合計を求めると、
コンピューターは、
「1から4464の合計は、4408です」と答えるのです。
 まだ、このくらいならば笑いごとで済みますが、
今度は、数字ではなく、
「ABCDEF」という文字を入れてみると、どうなるか。
コンピューターは、
「11975から307の合計は、-16199です」と答えるのです。
 もし、ウイルスや悪意のハッカーが、このような入力をしたら・・・・・。
もし、大企業や政府で使われているプログラムで、こんな事態が起こったら・・・・・。
(引用、以上)
 「わが社には、プログラミングが得意な社員が多いので、
自社でシステム開発をする」というのは、大企業ではあり得ても、
中小企業では、最低の企業統治です。
 たとえ高くついても、システム開発は、
専門の会社に依頼すべきです。
 システム開発の専門家は、
数多くの失敗や経験を教訓として持っています。
(参考文献)
「苦しんで覚えるC言語」(MMGames 秀和システム)
 この本のタイトルは、誤解を受けやすいタイトルですが、
内容は、初心者向けに、ていねいな解説となっている本です。






















































































トップページへ戻る